* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* 解决手机浏览器点击有选框的问题 */
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  display: flex;
  justify-content: center;
  align-items: center;

  min-height: 100vh;
  background-color: #000000;
}

.bubble {
  position: absolute;

  width: 200px;
  height: 200px;
  border-radius: 50%;
  box-shadow: inset 0 0 25px rgba(255, 255, 255, 0.25);

  animation: animate 8s ease-in-out infinite;
}
.bubble:nth-child(2) {
  position: relative;

  zoom: 0.45;
  top: -100px;
  left: -10px;

  animation-delay: -4s;
}
.bubble:nth-child(3) {
  position: relative;

  zoom: 0.25;
  top: -300px;
  right: -80px;

  animation-delay: -6s;
}
.bubble:nth-child(4) {
  position: relative;

  zoom: 0.35;
  bottom: -200px;
  right: -120px;

  animation-delay: -3s;
}
.bubble:nth-child(5) {
  position: relative;

  zoom: 0.5;
  top: -250px;
  left: 0;

  animation-delay: -5s;
}

@keyframes animate {
  0%,
  100% {
    transform: translateY(-20px);
  }
  50% {
    transform: translateY(20px);
  }
}

.bubble::before {
  content: "";
  position: absolute;
  top: 50px;
  left: 45px;

  width: 30px;
  height: 30px;
  border-radius: 50%;
  background-color: #ffffff;
  filter: blur(2px);

  z-index: 10;
}
.bubble::after {
  content: "";
  position: absolute;
  top: 80px;
  left: 85px;

  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #ffffff;
  filter: blur(2px);

  z-index: 10;
}

.bubble span {
  position: absolute;

  border-radius: 50%;
  filter: blur(8px);
}
.bubble span:nth-child(1) {
  inset: 10px;
  border-left: 15px solid #0fb4ff;
}
.bubble span:nth-child(2) {
  inset: 10px;
  border-right: 15px solid #ff3384;
}
.bubble span:nth-child(3) {
  inset: 20px;
  border-top: 15px solid #ffeb3b;
}
.bubble span:nth-child(4) {
  inset: 30px;
  border-left: 15px solid #ff3384;
  filter: blur(12px);
}
.bubble span:nth-child(5) {
  inset: 10px;
  border-bottom: 10px solid #ffffff;

  transform: rotate(330deg);
}
